using System;
using System.Data;
using System.Data.SqlClient;
using SystemFrameworks;
using Microsoft.ApplicationBlocks.Data;
using Common; using MinCultura.Sipa.DataAccess.EntidadesArtes;
using SystemFrameworks;

namespace MinCultura.Sipa.EntidadesArtes
{
	/// <summary>
	/// Clase de acceso a datos para la entidad ART_NIVEL_ENTIDADES_IMPARTE
	/// </summary>
	public class NivelEntidadesImparte 
	{
		#region Private Data Access Atributes

		private const String NFI_ID_PARAM = "@NFI_ID";
		private const String ENT_ID_PARAM = "@ENT_ID";

		#endregion Private Data Access Atributes

		/// <summary>
		/// Constructor de la clase ARTNIVELENTIDADESIMPARTE
		/// </summary>
        public NivelEntidadesImparte(string strCadenaConecxion)
        {
            ConnectionString = strCadenaConecxion;
        }

        private string _cadenaConexion;

        public string ConnectionString
        {
            get { return _cadenaConexion; }
            set { _cadenaConexion = value; }
        }

		public NivelEntidadesImparteData BuscarNivelEntidadesImparte()
		{
			NivelEntidadesImparteData response = new NivelEntidadesImparteData();
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_BUSCAR_ART_NIVEL_ENTIDADES_IMPARTE", response);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}


		public NivelEntidadesImparteData ConsultarNivelEntidadesImparte(decimal parEntidad)
		{
			NivelEntidadesImparteData response = new NivelEntidadesImparteData();
			SqlParameter param1 = new SqlParameter(ENT_ID_PARAM, parEntidad);
			SqlParameter[] parameters = {param1};
			SqlHelper.ExecuteDataTable(this.ConnectionString, CommandType.StoredProcedure, "PAS_CONSULTAR_ART_NIVEL_ENTIDADES_IMPARTE", response, parameters);
			if (response.Rows.Count == 0)
				return null;
			return response;
		}

		public void AdicionarNivelEntidadesImparte(NivelEntidadesImparteData datos, params SqlTransaction[] transaccion)
		{			
			try
			{
				foreach (DataRow row in datos.Rows)
				{
					SqlParameter param1 = new SqlParameter(NFI_ID_PARAM, row[NivelEntidadesImparteData.NFI_ID_FIELD]);
					SqlParameter param2 = new SqlParameter(ENT_ID_PARAM, row[NivelEntidadesImparteData.ENT_ID_FIELD]);
					SqlParameter[] parameters = {param1, param2};
					if (transaccion.Length == 0)
						SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ADICIONAR_ART_NIVEL_ENTIDADES_IMPARTE", parameters);
					else
						SqlHelper.ExecuteNonQuery(transaccion[0], CommandType.StoredProcedure, "PAS_ADICIONAR_ART_NIVEL_ENTIDADES_IMPARTE", parameters);
				}
			}
			catch (SqlException sqlEx)
			{
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ADICIONAR_ART_NIVEL_ENTIDADES_IMPARTE"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorInsertar", "PAS_ADICIONAR_ART_NIVEL_ENTIDADES_IMPARTE"), ex);
			}
		}

		/// <summary>
		/// Elimina un registro de la entidad Artnivelentidadesimparte
		/// </summary>
		/// <param name="parEntidad">Identificador del registro
		public void EliminarNivelEntidadesImparte(decimal parEntidad, params SqlTransaction[] transaccion)
		{
			try
			{
				SqlParameter param1 = new SqlParameter(ENT_ID_PARAM, parEntidad);
				SqlParameter[] parameters = {param1};
				if (transaccion.Length == 0)
					SqlHelper.ExecuteNonQuery(this.ConnectionString, CommandType.StoredProcedure, "PAS_ELIMINAR_ART_NIVEL_ENTIDADES_IMPARTE", parameters);
				else
					SqlHelper.ExecuteNonQuery(transaccion[0], CommandType.StoredProcedure, "PAS_ELIMINAR_ART_NIVEL_ENTIDADES_IMPARTE", parameters);
			}
			catch (SqlException sqlEx)
			{
				throw new ApplicationExceptionManager(Utilidad.DisplaySqlErrors(sqlEx, "PAS_ELIMINAR_ART_NIVEL_ENTIDADES_IMPARTE o PAS_ELIMINAR_ART_NIVEL_ENTIDADES_IMPARTE"), sqlEx);
			}
			catch (Exception ex)
			{
				throw new ApplicationExceptionManager(Utilidad.TraerMensaje("gmsgErrorEliminar", "PAS_ELIMINAR_ART_NIVEL_ENTIDADES_IMPARTE o PAS_ELIMINAR_ART_NIVEL_ENTIDADES_IMPARTE"), ex);
			}
		}
	}
}